package lambad.demo02;

/**
 * @author 真香
 * @create 2021-06-03 15:35
 */
// 推导Lambda表达式
public class TestLambda1 {

    // 3 静态内部类
  static class Like2 implements ILike{

        @Override
        public void lambda() {
            System.out.println("I like Lambda2静态内部类 ");
        }
    }


    public static void main(String[] args){

        ILike like = new Like();
        like.lambda();


        like = new Like2();
        like.lambda();


        // 4 局部内部类
        class Like3 implements ILike{

            @Override
            public void lambda() {
                System.out.println("I like Lambda3 局部内部类");
            }
        }

        like = new Like3();
        like.lambda();

        // 5 匿名内部类。没有类的名称，必须借助接口或者父类
        like = new ILike() {

            @Override
            public void lambda () {
                System.out.println("I like Lambda4 匿名内部类");
            }
        };
        like.lambda();

        // 6 用lambda 简化 因为只有一个接口所以直接省略new Ilike ,取()后面的方法体就行,只有一个接口也方便定位接口里面的方法
        like = () -> {
            System.out.println("I like Lambda5 用lambda 简化 ");
        };
        like.lambda();




    }



}

// 1 定义函数接口
interface ILike {

    void lambda();
}

//2 实现类
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("I like Lambda 接口实现");
    }
}
